/**
 * Created by apple on 2017/6/10.
 */

var express = require('express');
var router = express.Router();

var AdmUserRouter = module.exports;
var AdminToken = require('../db/user_tokens.js');
var adminUser = require('../dao/admin_user.js');
var VerifyCodeDao = require("../dao/verify_code");
var globalVar = require('../global_var');
var crypto = require('crypto');
var Log = require('../dao/log.js');
var paymentDao = require('../dao/payment');
var Users = require('../dao/users.js');
// var UserAppDao = require('../dao/user_app.js');
// var UserDao = require('../dao/users.js');


/**
 * 系统管理员、产品管理员查询用户（根据名称、手机尾号、vip类型查询）
 * @param  token 管理员
 *
 *         url/admin_user/findUser
 */
AdmUserRouter.findUser = function(req, res) {
    var par = paramAll(req);

    if (!par.token) {
        res.json(new ERR('token不为空', 400));
        return;
    }

    AdminToken.checkAdminLogin(par.token,par.app_sid, function (err,errCode, adminInfo) {
        if (err) {
            res.json(new ERR(err, errCode));
            return;
        }

        var param = {
            app_sid: par.app_sid,
            name: par.name,
            phoneTail: par.phoneTail,
            vip_sid: par.vip_sid,
            page: par.page,
            pageNum: par.pageNum
        }
        adminUser.findUser(param, function (err, result) {
            if (err) {
                res.json(new ERR(err, 400));
                return;
            }
            var list = {
                userList: result
            };
            res.json(new PKG(list));
        });
    });
}
router.post('/findUser', AdmUserRouter.findUser);

/**
 * 系统管理员、产品管理员查询用户（根据名称、手机尾号、vip类型查询）
 * @param  token 管理员
 *
 *         url/admin_user/getAccounts
 */
AdmUserRouter.getAccounts = function(req, res) {
    var par = paramAll(req);

    if (!par.token) {
        res.json(new ERR('token不为空', 400));
        return;
    }

    if (!par.uids) {
        res.json(new ERR('uid列表不为空', 400));
        return;
    }

    AdminToken.checkAdminLogin(par.token,par.app_sid, function (err,errCode, adminInfo) {
        if (err) {
            res.json(new ERR(err, errCode));
            return;
        }

        adminUser.getAccounts(par, function (err, result) {
            if (err) {
                res.json(new ERR(err, 400));
                console.log(err);
                return;
            }
            var list = {
                userList: result
            };
            res.json(new PKG(list));
        });
    });
}
router.post('/getAccounts', AdmUserRouter.getAccounts);

/**
 * 系统管理员、产品管理员后台添加用户
 * @param  token 管理员
 *         url/admin_user/findUser
 */
AdmUserRouter.addUser = function(req, res) {
    var par = paramAll(req);

    if (!par.token) {
        res.json(new ERR('token不为空', 400));
        return;
    }

    if (!par.app_sid) {
        res.json(new ERR('产品不为空', 400));
        return;
    }

    if (!par.account) {
        res.json(new ERR('账号不能为空', 400));
        return;
    }

    AdminToken.checkAdminLogin(par.token,par.app_sid, function (err,errCode,adminInfo) {
        if (err) {
            res.json(new ERR(err, errCode));
            return;
        }

        par.password = encryPassword(par.password);
        par.time = new Date();
        par.type = 0;
        par.reg_source = 'houtai';
        par.adm_uid = adminInfo.uid;
        par.adm_account = adminInfo.account;
        adminUser.addUser(par,function (err,result) {
            if (err) {
                res.json(new ERR(err, 400));
                return;
            }
            res.json(new PKG(result));
        });

    });
}
router.post('/addUser', AdmUserRouter.addUser);



/**
 * 系统管理员、产品管理员设置用户代理级别
 * @param  token 管理员
 *         url/admin_user/setAgentLvl
 */
AdmUserRouter.setAgentLvl = function (req, res) {
    var par = paramAll(req);

    if (!par.token) {
        res.json(new ERR('token不为空', 400));
        return;
    }

    if (!par.uid) {
        res.json(new ERR('uid不为空', 400));
        return;
    }

    if (!par.app_sid) {
        res.json(new ERR('app_sid不为空', 400));
        return;
    }

    if (!par.lvl) {
        res.json(new ERR('lvl不为空', 400));
        return;
    }

    AdminToken.checkAdminLogin(par.token,par.app_sid,function (err,errCode, adminInfo) {
        if (err) {
            res.json(new ERR(err, errCode));
            return;
        }

        par.adm_uid = adminInfo.uid;
        par.account = adminInfo.account;
        adminUser.setAgentLvl(par, function (err, result) {
            if (err) {
                res.json(new ERR(err, 400));
                return;
            }
            res.json(new PKG(result));
        });

    });

}
router.post('/setAgentLvl', AdmUserRouter.setAgentLvl);

/**
 * 显示所有验证码
 * @param req token，phone
 * @param res
 */
AdmUserRouter.showVcode = function (req, res) {
    var par = paramAll(req);
    if (!par.token) {
        res.json(new ERR('请先登录', 403));
        return;
    }
    AdminToken.checkLogin(par.token, function (err, loginInfo) {
        if (err) {
            res.json(new err, 400);
            return;
        }
        if (!loginInfo) {
            res.json(new ERR('请先登录', 403));
            return;
        }
        //验证管理员身份
        if (!loginInfo.isAdmin) {
            res.json(new ERR('无权限', 400));
            return;
        }
        if (par.app_sid) {
            loginInfo.app_sid = par.app_sid;
        }
        if (par.phone) {
            loginInfo.phone = par.phone;
        }

        //检查是不是系统管理员或产品管理员
        var appAdminFlag = loginInfo.role.indexOf('adm_' + par.app_sid) >= 0;
        if (loginInfo.role.indexOf('admin') < 0 && appAdminFlag == false) {
            res.json(new ERR('无权限', 400));
            return;
        }

        var vcodeList = {};

        VerifyCodeDao.showVcodelist(loginInfo, function (e, result) {
            if (e) {
                res.json(new ERR(e, 400));
                return;
            }
            if (!result) {
                res.json(new err("获取验证码列表失败", 400));
            } else {
                result.forEach(function (o) {
                    o.create_time = simpleDateFormat(o.create_time);
                });
                console.log(result);
                vcodeList.vcodeList = result;
                res.json(new PKG(vcodeList));
            }

        });
    });
}

router.post('/getVcodelist', AdmUserRouter.showVcode);

/**
 * 删除某个验证码
 * @param 系统管理员：token、vcode、phone、app_sid
 * @param 产品管理员：token、app_sid、phone 、vcode
 *    url/admin_user/delVCode
 */
AdmUserRouter.delVcode = function (req, res) {
    var par = paramAll(req);
    if (!par.token) {
        res.json(new ERR('请先登录', 403));
        return;
    }
    AdminToken.checkLogin(par.token, function (err, loginInfo) {
        if (err) {
            res.json(new err, 400);
            return;
        }
        if (!loginInfo) {
            res.json(new ERR('请先登录', 403));
            return;
        }
        //验证管理员身份
        if (!loginInfo.isAdmin) {
            res.json(new ERR('无权限', 400));
            return;
        }
        if (par.app_sid) {
            loginInfo.app_sid = par.app_sid;
        }
        if (par.phone) {
            loginInfo.phone = par.phone;
        } else {
            res.json(new ERR('获取不到手机号', 400));
            return;
        }
        if (par.vcode) {
            loginInfo.vcode = par.vcode;
        } else {
            res.json(new ERR('获取不到验证码', 400));
            return;
        }

        //检查是不是系统管理员或产品管理员
        var appAdminFlag = loginInfo.role.indexOf('adm_' + par.app_sid) >= 0;
        if (loginInfo.role.indexOf('admin') < 0 && appAdminFlag == false) {
            res.json(new ERR('无权限', 400));
            return;
        }

        VerifyCodeDao.delVcode(loginInfo, function (e, result) {
            if (e) {
                res.json(new ERR(e, 400));
                return;
            }
            res.json(new PKG(result));
        });
    });
}

router.post('/delVCode', AdmUserRouter.delVcode);

/**
 * 重设用户密码
 * @param  token 、app_sid（可选）
 * @param  account 、uid
 * @param  初始密码   account + llc
 *         url/admin_management/resetPwd
 */
AdmUserRouter.resetUserPwd = function (req, res) {
    var par = paramAll(req);
    AdminToken.checkLogin(par.token, function (err, adminInfo) {
        if (err) {
            res.json(new ERR(err,400));
            return;
        }
        if (!adminInfo) {
            res.json(new ERR('请先登录', 403));
            return;
        }

        if (!adminInfo.isAdmin) {
            res.json(new ERR('无权限', 400));
            return;
        }
        //如果有带产品查询
        if (par.app_sid) {
            //检查是不是系统管理员或产品管理员
            if (adminInfo.role.indexOf('admin') < 0 && adminInfo.role.indexOf('adm_' + par.app_sid) < 0) {
                res.json(new ERR('无权限', 400));
                return;
            }
        } else {//如果没带产品查询
            //检查是不是系统管理员
            if (adminInfo.role.indexOf('admin') < 0) {
                res.json(new ERR('无权限', 400));
                return;
            }
        }

        par.password = par.account + 'llc';
        par.password = encryPassword(par.password);

        adminUser.resetUserPwd(par, function (err, data) {
            var logInfo = {};
            logInfo.account = par.account;
            logInfo.uid = par.uid;
            logInfo.adm_uid = adminInfo.uid;
            logInfo.type = 2;
            if (err) {
                logInfo.detail = err;
                Log.adminLog(logInfo, function (result) {
                    if (result) {
                        res.json(new ERR(err, 400));
                    }
                });
            } else {
                logInfo.detail = '重置密码成功!';
                Log.adminLog(logInfo, function (result) {
                    if (result) {
                        res.json(new PKG('重置成功！'));
                    }
                });
            }
        });

    });
}
router.post('/resetUserPwd', AdmUserRouter.resetUserPwd);

/**
 * 查ip
 * @param req token，ip(可选)
 * @param res
 */
AdmUserRouter.showIp = function (req, res) {
    var par = paramAll(req);
    if (!par.token) {
        res.json(new ERR('请先登录', 403));
        return;
    }
    AdminToken.checkLogin(par.token, function (err, loginInfo) {
        if (err) {
            res.json(new err, 400);
            return;
        }
        if (!loginInfo) {
            res.json(new ERR('请先登录', 403));
            return;
        }

        //验证管理员身份
        if (!loginInfo.isAdmin) {
            res.json(new ERR('无权限', 400));
            return;
        }

        //检查是不是系统管理员
        if (loginInfo.role.indexOf('admin') < 0) {
            res.json(new ERR('无权限', 400));
            return;
        }

        var ipLists = {};

        VerifyCodeDao.showIp(par, function (e, result) {
            if (e) {
                res.json(new ERR(e, 400));
                return;
            }
            if (!result) {
                res.json(new err("获取Ip列表失败", 400));
            } else {
                result.forEach(function (o) {
                    o.create_time = simpleDateFormat(o.create_time);
                });
                console.log(result);
                ipLists.ipList = result;
                res.json(new PKG(ipLists));
            }

        });
    });
}

router.post('/getIplist', AdmUserRouter.showIp);


/**
 * 修改特定ip的次数，清零
 * @param req token，ip
 * @param res
 */
AdmUserRouter.setIp = function (req, res) {
    var par = paramAll(req);
    if (!par.token) {
        res.json(new ERR('请先登录', 403));
        return;
    }
    if (!par.ip) {
        res.json(new ERR('缺少要清零的ip', 400));
        return;
    }
    AdminToken.checkLogin(par.token, function (err, loginInfo) {
        if (err) {
            res.json(new err, 400);
            return;
        }
        if (!loginInfo) {
            res.json(new ERR('请先登录', 403));
            return;
        }

        //验证管理员身份
        if (!loginInfo.isAdmin) {
            res.json(new ERR('无权限', 400));
            return;
        }

        //检查是不是系统管理员
        if (loginInfo.role.indexOf('admin') < 0) {
            res.json(new ERR('无权限', 400));
            return;
        }

        VerifyCodeDao.setIp(par, function (e, result) {
            if (e) {
                res.json(new ERR(e, 400));
                return;
            }
            if (!result) {
                res.json(new err("修改失败", 400));
            } else {
                var result = '修改成功';
                res.json(new PKG(result));
            }

        });
    });
}

router.post('/setIp', AdmUserRouter.setIp);

/**
 * 清空非当天所有ip项
 * @param 系统管理员：token
 */
AdmUserRouter.deleteIp = function (req, res) {
    var par = paramAll(req);
    if (!par.token) {
        res.json(new ERR('请先登录', 403));
        return;
    }
    AdminToken.checkLogin(par.token, function (err, loginInfo) {
        if (err) {
            res.json(new err, 400);
            return;
        }

        if (!loginInfo) {
            res.json(new ERR('请先登录', 403));
            return;
        }

        //验证管理员身份
        if (!loginInfo.isAdmin) {
            res.json(new ERR('无权限', 400));
            return;
        }

        //检查是不是系统管理员
        if (loginInfo.role.indexOf('admin') < 0) {
            res.json(new ERR('无权限', 400));
            return;
        }

        VerifyCodeDao.deleteIp(par, function (e, result) {
            if (e) {
                res.json(new ERR(e, 400));
                return;
            }
            if (!result) {
                res.json(new err("修改失败", 400));
            } else {
                var result = '修改成功';
                res.json(new PKG(result));
            }
        });
    });
}
router.post('/deleteIp', AdmUserRouter.deleteIp);


/**
 * 系统管理员、产品管理员添加用户权限
 * @param  token 管理员
 *         url/admin_user/addUserVip
 */
AdmUserRouter.addUserVip = function (req, res) {
    var par = paramAll(req);

    if(!par.token) return res.json(new ERR('token不为空', 400));
    if(!par.uid) return res.json(new ERR('uid不为空', 400));
    if(!par.id) return  res.json(new ERR('会员id不能为空', 400));
    if(!par.expireDate) return res.json(new ERR('到期时间不能为空', 400));//可以为0

    AdminToken.checkAdminLogin(par.token,par.app_sid,function (err,errCode,adminInfo) {
        if(err){
            res.json(new ERR(err, errCode));
            return;
        }
        adminUser.checkVipInfo(par, function (err, result) {
            if (err) {
                res.json(new ERR(err, 400));
                return;
            }
            par.vipInfo = result.vipInfo;
            par.itemInfo = result.itemInfo;
            par.adm_uid = adminInfo.uid;
            par.adm_account = adminInfo.account;
            adminUser.addUserVip(par,function (err,result) {
                if (err) {
                    res.json(new ERR(err, 400));
                    return;
                }
                res.json(new PKG(result));
            });

        });
    });

}
router.post('/addUserVip', AdmUserRouter.addUserVip);


/**
 * 系统管理员、产品管理员修改用户权限
 * @param  token 管理员
 *         url/admin_user/addUserVip
 *         token,uid,account,app_sid,vip_sid, lvl(选),endTime(选)  lvl,endTime必有1
 */
AdmUserRouter.updateUserVip = function (req, res) {
    var par = paramAll(req);

    if(!par.token) return res.json(new ERR('token不为空', 400));
    if(!par.uid) return res.json(new ERR('用户标识不为空', 400));
    if(!par.app_sid) return res.json(new ERR('产品标识不为空', 400));
    if(!par.vip_sid) return res.json(new ERR('会员标识不为空', 400));
    if(!par.lvl || !par.endTime) return res.json(new ERR('修改参数不为空', 400));
    if(par.lvl < 0) return res.json(new ERR('等级不能为负', 400));
    AdminToken.checkAdminAllLogin(par.token,par.app_sid,'usr_vfy',function (err,errCode,adminInfo) {
        if(err){
            res.json(new ERR(err, errCode));
            return;
        }

        var param = {};
        var userVipInfo = {
            uid: par.uid,
            app_sid: par.app_sid,
            vip_sid: par.vip_sid,
        };
        if(par.lvl) userVipInfo.lvl = par.lvl;
        if(par.endTime) userVipInfo.end_time = par.endTime;
        param.userVipInfo = userVipInfo;
        param.adm_uid = adminInfo.uid;
        param.account = par.account;
        adminUser.updateUserVip(param,function (err,result) {
            if (err) {
                res.json(new ERR(err, 400));
                return;
            }
            AdminToken.delSubs(par,function (err, r) {
                if (err) {
                    res.json(new ERR(err));
                    return;
                }
                res.json(new PKG(result));
            });
        });

    });
}
router.post('/updateUserVip', AdmUserRouter.updateUserVip);

/**
 * 系统管理员、产品管理员修改用户权限
 * @param  token 管理员
 *         url/admin_user/updateUserVips
 *         token,give_obj,app_sid,vip_sid, lvl(选),endTime(选)  lvl,endTime必有1
 *         give_obj:{give_accs:[]}
 */
AdmUserRouter.updateUserVips = function (req, res) {
    var par = paramAll(req);
    if (!par.give_obj) return res.json(new ERR('参数有误', 400));
    var give_obj = {};
    try {
       give_obj = JSON.parse(par.give_obj);
    } catch (e){
        return res.json(new ERR('参数有误', 400));
    }
    par.give_accs = give_obj.give_accs;
    if (!give_obj.give_accs) return res.json(new ERR('账号不为空', 400));
    if(!par.token) return res.json(new ERR('token不为空', 400));
    if(!par.app_sid) return res.json(new ERR('产品标识不为空', 400));
    if(!par.vip_sid) return res.json(new ERR('会员标识不为空', 400));
    if(!par.lvl || !par.endTime) return res.json(new ERR('修改参数不为空', 400));
    if(par.lvl < 0) return res.json(new ERR('等级不能为负', 400));
    AdminToken.checkAdminAllLogin(par.token,par.app_sid,'usr_vfy',function (err,errCode,adminInfo) {
        if(err){
            res.json(new ERR(err, errCode));
            return;
        }
        par.admUid = adminInfo.uid;
        adminUser.updateUserVips(par,function (err,result) {
            if (err) {
                res.json(new ERR(err, 400));
                return;
            }
            res.json(new PKG(result));
        });
    });
};
router.post('/updateUserVips', AdmUserRouter.updateUserVips);

/**
 * 系统管理员、产品管理员批量添加用户权限
 * @param  token 管理员
 *         url/admin_user/addUsersVip
 *         token,uids,app_sid,,vip_sid,lvl
 */
AdmUserRouter.addUsersVip = function (req, res) {
    var par = paramAll(req);

    if(!par.token) return res.json(new ERR('token不为空', 400));
    if(!par.uids) return res.json(new ERR('用户标识列表不为空', 400));
    if(!par.app_sid) return res.json(new ERR('产品标识不为空', 400));
    if(!par.vip_sid) return res.json(new ERR('会员标识不为空', 400));
    //添加时
    if(!par.lvl) return res.json(new ERR('vip等级不为空', 400));
    if(par.lvl < 0) return res.json(new ERR('等级不能为负', 400));
    AdminToken.checkAdminAllLogin(par.token,par.app_sid,'usr_vfy',function (err,errCode,adminInfo) {
        if(err){
            res.json(new ERR(err, errCode));
            return;
        }

        var param = {};
        var userVipInfo = {
            uids: par.uids,
            app_sid: par.app_sid,
            vip_sid: par.vip_sid,
        };
        if(par.lvl) userVipInfo.lvl = par.lvl;
        if(par.end_time){
            userVipInfo.end_time = par.end_time;
        }else {
            userVipInfo.end_time = null;
        };
        param.userVipInfo = userVipInfo;
        param.adm_uid = adminInfo.uid;
        adminUser.addUsersVip(param,function (err,result) {
            if (err) {
                res.json(new ERR(err, 400));
                return;
            }
            res.json(new PKG(result));
        });

    });
}
router.post('/addUsersVip', AdmUserRouter.addUsersVip);

/**
 * 系统管理员、产品管理员或产品用户认证功能管理员给跑单用户添加信用积分和积分
 * @param  token 管理员
 *         url/admin_user/addUsersVipFromPD
 *         token,uids,account,app_sid,,vip_sid moneyPoint
 */
AdmUserRouter.addUsersVipFromPD = function (req, res) {
    var par = paramAll(req);

    if(!par.token) return res.json(new ERR('token不为空', 400));
    if(!par.app_key) return res.json(new ERR('产品key不为空', 400));
    if(!par.app_sign) return res.json(new ERR('产品sign不为空', 400));
    if(!par.app_time) return res.json(new ERR('产品时间戳不为空', 400));
    if(!par.uids) return res.json(new ERR('用户标识列表不为空', 400));
    if(!par.moneyPoint) return res.json(new ERR('财富积分不为空', 400));
    if(par.moneyPoint < 0) return res.json(new ERR('财富积分不能为负', 400));
    par.app_sid = 'paodan';
    AdminToken.checkAdminAllLogin(par.token,par.app_sid,'usr_vfy',function (err,errCode,adminInfo) {
        if(err){
            res.json(new ERR(err, errCode));
            return;
        }

        if(!checkSrvConnection(par)){
            res.json(new ERR('参数不合法或没有该产品',400));
        }

        var param = par;
        param.adm_uid = adminInfo.uid;
        param.adm_account = adminInfo.account;
        adminUser.addUsersVipFromPD(param,function (err,result) {
            if (err) {
                res.json(new ERR(err, 400));
                return;
            }
            res.json(new PKG(result));
        });
    });
}
router.post('/addUsersVipFromPD', AdmUserRouter.addUsersVipFromPD);

/**
 * 系统管理员、产品管理员删除用户权限
 * @param  token 管理员
 *         url/admin_user/delUserVip
 */
AdmUserRouter.delUserVip = function (req, res) {
    var par = paramAll(req);

    if (!par.token) {
        res.json(new ERR('token不为空', 400));
        return;
    }

    if (!par.uid) {
        res.json(new ERR('uid不为空', 400));
        return;
    }

    if (!par.app_sid) {
        res.json(new ERR('app_sid不为空', 400));
        return;
    }

    if (!par.vip_sid) {
        res.json(new ERR('vip_sid不为空', 400));
        return;
    }

    AdminToken.checkAdminLogin(par.token,par.app_sid, function (err,errCode, adminInfo) {
        if (err) {
            res.json(new ERR(err, errCode));
            return;
        }

        par.adm_uid = adminInfo.uid;
        par.account = adminInfo.account;
        adminUser.delUserVip(par, function (err, result) {
            if (err) {
                res.json(new ERR(err, 400));
                return;
            }
            AdminToken.delSubs(par,function (err, r) {
                if (err) {
                    res.json(new ERR(err));
                    return;
                }
                res.json(new PKG(result));
            });
        });

    });

}
router.post('/delUserVip', AdmUserRouter.delUserVip);

/**
 * 系统管理员、产品管理员批量删除用户权限
 * @param  token 管理员
 *         url/admin_user/delUsersVip
 */
AdmUserRouter.delUsersVip = function (req, res) {
    var par = paramAll(req);

    if (!par.token) {
        res.json(new ERR('token不为空', 400));
        return;
    }

    if (!par.uids) {
        res.json(new ERR('uids不为空', 400));
        return;
    }

    if (!par.app_sid) {
        res.json(new ERR('app_sid不为空', 400));
        return;
    }

    if (!par.vip_sid) {
        res.json(new ERR('vip_sid不为空', 400));
        return;
    }

    AdminToken.checkAdminAllLogin(par.token,par.app_sid,'usr_vfy', function (err,errCode, adminInfo) {
        if (err) {
            res.json(new ERR(err, errCode));
            return;
        }

        par.adm_uid = adminInfo.uid;
        par.adm_account = adminInfo.account;
        adminUser.delUsersVip(par, function (err, result) {
            if (err) {
                res.json(new ERR(err, 400));
                return;
            }
            res.json(new PKG(result));
        });
    });

}
router.post('/delUsersVip', AdmUserRouter.delUsersVip);

/**
 * 系统管理员、产品管理员或产品用户认证功能管理员删除跑单用户信用积分和积分
 * @param  token 管理员
 *         url/admin_user/delUsersVipFromPD
 *         token,uids,sign,app_key,app_time
 */
AdmUserRouter.delUsersVipFromPD = function (req, res) {
    var par = paramAll(req);

    if(!par.token) return res.json(new ERR('token不为空', 400));
    if(!par.app_key) return res.json(new ERR('产品key不为空', 400));
    if(!par.app_sign) return res.json(new ERR('产品sign不为空', 400));
    if(!par.app_time) return res.json(new ERR('产品时间戳不为空', 400));
    if(!par.uids) return res.json(new ERR('用户标识列表不为空', 400));
    par.app_sid = 'paodan';
    AdminToken.checkAdminAllLogin(par.token,par.app_sid,'usr_vfy',function (err,errCode,adminInfo) {
        if(err){
            res.json(new ERR(err, errCode));
            return;
        }

        if(!checkSrvConnection(par)){
            res.json(new ERR('参数不合法或没有该产品',400));
        }

        var param = par;
        param.adm_uid = adminInfo.uid;
        param.adm_account = adminInfo.account;
        adminUser.delUsersVipFromPD(param,function (err,result) {
            if (err) {
                res.json(new ERR(err, 400));
                return;
            }
            res.json(new PKG(result));
        })
        ;
    });
}
router.post('/delUsersVipFromPD', AdmUserRouter.delUsersVipFromPD);

/**
 * 系统管理员、产品管理员查看用户流水 ，用户查看自己流水
 * 管理员 token,app_sid(可选),uid(可选)，time，page
 * 用户
 */
AdmUserRouter.orderList = function (req, res) {
    var par = paramAll(req);

    if (!par.token) {
        res.json(new ERR('token不为空', 400));
        return;
    }
    if(par.endTime && !par.startTime){
        res.json(new ERR('起始时间不为空',400));
        return;
    }

    AdminToken.checkLogin(par.token, function (err, adminInfo) {
        if (err) {
            res.json(new ERR(err, 400));
            return;
        }

        if (!adminInfo) {
            res.json(new ERR('请先登录', 403));
            return;
        }

        if(!adminInfo.isAdmin){//如果是用户
            par.uid = adminInfo.uid;
        }
        console.log(adminInfo);
        par.isAdmin = adminInfo.isAdmin;

        if(adminInfo.isAdmin) { //如果是管理员，检查下权限
            //检查是不是系统管理员或产品管理员
            if (adminInfo.role.indexOf('admin') < 0 && adminInfo.role.indexOf('adm_' + par.app_sid) < 0) {
                res.json(new ERR('无权限', 400));
                return;
            }
        }

        adminUser.orderList(par, function (err, result) {
            if (err) {
                res.json(new ERR(err, 400));
                return;
            }
            res.json(new PKG(result));
        });

    });

}
router.post('/orderList', AdmUserRouter.orderList);



/**
 * 系统管理员、产品管理员禁用或启用某用户某产品的使用
 * 管理员 token(必填),app_sid(必填),uid、account(二选一，必填其一)，status(必填),comment(可选)
 * 用户
 */
AdmUserRouter.updateUserAppStatus = function (req, res) {
    var par = paramAll(req);

    if(!checkSrvConnection(par)) return res.json(new ERR('无访问权限',400))
    if(!par.app_sid) return res.json(new ERR('产品表示不为空',400));
    if(par.status != 0 && par.status != 1) return res.json(new ERR('修改状态不为空',400));
    if(!par.uid && !par.account) return res.json(new ERR('用户标识不为空',400));
    AdminToken.checkAdminLogin(par.token,par.app_sid, function (err, adminInfo) {
        if (err) {
            res.json(new ERR(err, 400));
            return;
        }
        par.adm_uid = adminInfo.uid;
        par.adm_account = adminInfo.account;
        adminUser.updateUserAppStatus(par, function (err, result) {
            if (err) {
                res.json(new ERR(err, 400));
                return;
            }
            res.json(new PKG(result));
        });

    });

}
router.post('/updateUserAppStatus', AdmUserRouter.updateUserAppStatus);


module.exports = router;